import type { CardListParams, CardDetail, CardListData, CardParams } from "@/types/card"
import { request } from "@/utils/reuqest"

/**
 * 查看月卡信息列表
 * @param params 
 * @returns 
 */
export const getCardListAPI = (params: CardListParams) => {
  return request<CardListData>('/parking/card/list', 'GET', params)
}

/**
 * 创建卡片API
 * 
 * 该函数用于向系统提交创建卡片的请求，可以根据提供的参数定制卡片的创建过程
 * 主要用途是通过POST请求向服务器发送卡片创建指令和相关参数，以便在系统中生成相应的卡片信息
 * 
 * @param params 创建卡片的参数对象，可选地传递以定制卡片创建过程
 *        参数类型为CardParams的Partial，意味着可以只提供所需参数的子集
 * @returns 返回请求的结果，通常包括服务器的响应数据
 * 
 * 注意：该函数的实现依赖于request函数，后者负责实际的网络请求
 */
export const createCardAPI = (params: Partial<CardParams>) => {
  return request('/parking/card', 'POST', params)
}

/**
 * 获取编辑页月卡详情
 * @param id 月卡id
 * @returns 
 */
export const getCardDetailAPI = (id: string) => {
  return request<CardDetail>(`/parking/card/detail/${id}`)
}

/**
 * 编辑月卡
 * @param {*} data
 * @returns
 */
export const updateCardAPI = (data: Partial<CardDetail>) => {
  return request('/parking/card/edit', 'PUT', data)
}

/**
 * 删除月卡
 * @param ids 
 * @returns 
 */
export const delCardAPI = (ids: number[]) => {
  // 批量删除时，id用逗号隔开，通过 join 方法拼接字符串
  return request(`/parking/card/${ids.join(',')}`, 'DELETE')
}

/**
 * 获取规则列表
 * @param { page, pageSize} params
 * @returns
 */
export const getRuleListAPI = (params: CardListParams) => {
  return request<CardListData>('parking/rule/list', 'GET', params)
}